/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package metodo;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 *
 * @author Jorge
 */
public class metodos {

    Connection conexion;
    public String z, a;

    public boolean conectar() {

        try {
            DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
            String BaseDeDatos = "jdbc:oracle:thin:@192.168.0.38:1521:XE";
            conexion = DriverManager.getConnection(BaseDeDatos, "PROYECTO_NUTRI", "proyecto");
            if (conexion != null) {
                System.out.println("Conexion exitosa a esquema BASE");
                return true;
            } else {
                System.out.println("Conexion fallida");
            }
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        return false;
    }

    public ResultSet consulta(String a, String b) {
        ResultSet rs = null;
        try {
            String sql = "Select * from USUARIO where USUARIO='" + a + "' and PASSWORD='" + b + "'";
            if (conectar()) {
                Statement stt = conexion.createStatement();
                rs = stt.executeQuery(sql);
                return rs;
            } else {
                return rs;
            }
        } catch (Exception ae) {
            return rs;
        }

    }

    public ResultSet consultaralimento() {
        ResultSet rs = null;
        try {
            String sql = "Select * from alimento";
            if (conectar()) {
                Statement stt = conexion.createStatement();
                rs = stt.executeQuery(sql);
                return rs;
            }
            return rs;
        } catch (Exception ae) {
            return rs;
        }
    }
     public ResultSet consultaralimentodieta(int x) {
        ResultSet rs = null;
        try {
            String sql = "select * from alimento inner join dieta_alimento on (alimento.id_alimento=dieta_alimento.id_alimento) where dieta_alimento.id_dieta='" + x + "'";
            if (conectar()) {
                Statement stt = conexion.createStatement();
                rs = stt.executeQuery(sql);
                return rs;
            }
            return rs;
        } catch (Exception ae) {
            return rs;
        }
    }
    public ResultSet consultaUsuario(int x) {
        ResultSet rs = null;
        try {
            String sql = "Select * from usuario where id_usuario='" + x + "'";
            if (conectar()) {
                Statement stt = conexion.createStatement();
                rs = stt.executeQuery(sql);
                return rs;
            }
            return rs;
        } catch (Exception ae) {
            return rs;
        }
    }

    public ResultSet ModificarUsuario(String usuario, String password, String correo, String direccion, String apellido, int edad, String sexo, int id) {
        ResultSet rs = null;
        try {
            if (conectar()) {
                CallableStatement cs = null;
                cs = conexion.prepareCall("BEGIN ACTUALIZAR_USUARIO(?,?,?,?,?,?,?,?); end;");
                cs.setString(1, usuario);
                cs.setString(2, password);
                cs.setString(3, correo);
                cs.setString(4, direccion);
                cs.setString(5, apellido);
                cs.setInt(6, edad);
                cs.setString(7, sexo);
                cs.setInt(8, id);
                cs.execute();
                conexion.close();
            }
            return rs;
        } catch (Exception ae) {
            return rs;
        }
    }

    public String altaAlimento(String nombre, int porcion, int calorias, String status, int peso) {
        try {
            if (conectar()) {
                CallableStatement cs = null;
                cs = conexion.prepareCall("BEGIN ALTA_ALIMENTO(?,?,?,?,?); END;");
                cs.setString(1, nombre);
                cs.setInt(3, porcion);
                cs.setInt(2, calorias);
                cs.setString(4, status);
                cs.setInt(5, peso);
                cs.execute();
                conexion.close();
                return "realizado";
            }
        } catch (Exception ae) {
            return "fallido";
        }
        return "Alta de alimento";
    }

    public String altapaciente(String nombre, String apellido, String correo, String direccion, int edad, String sexo, String idn, int pes, double alt, String diabetes, String cardiovasculares, String anemia, String epilepsia, String tuberculosis, String hipertension, String cancer, String sida, String reumatismo, String hemofilia) {

        try {
            String tipo = "paciente";
            String a = "";
            if (conectar()) {
                CallableStatement cs = null;
                cs = conexion.prepareCall("BEGIN \"ALTA_nutripaciente\"(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?); END;");
                cs.setString(1, nombre);
                cs.setString(2, nombre);
                cs.setString(3, correo);
                cs.setString(4, direccion);
                cs.setString(5, apellido);
                cs.setString(6, a);
                cs.setString(7, a);
                cs.setInt(8, edad);
                cs.setString(9, tipo);
                cs.setString(10, sexo);
                cs.setString(11, idn);
                cs.setInt(12, pes);
                cs.setDouble(13, alt);
                cs.setString(14, diabetes);
                cs.setString(15, cardiovasculares);
                cs.setString(16, anemia);
                cs.setString(17, epilepsia);
                cs.setString(18, tuberculosis);
                cs.setString(19, hipertension);
                cs.setString(20, cancer);
                cs.setString(21, sida);
                cs.setString(22, reumatismo);
                cs.setString(23, hemofilia);
                cs.execute();
                conexion.close();
                return "Insercion realizada";
            } else {
                return "Insercion Fallida";
            }
        } catch (Exception ae) {
            return "Insercion Fallida";
        }

    }

    public ResultSet consultar(int x) {

        ResultSet rs = null;

        try {
            String sql = "select * from usuario inner join nutriologo_paciente on (id_usuario=id_paciente) where id_nutriologo=" + x + "";
            if (conectar()) {
                Statement stt = conexion.createStatement();
                rs = stt.executeQuery(sql);
            }
            return rs;
        } catch (Exception e) {
            System.out.print("Error al consultar: " + e);
        }
        return rs;
    }
public String borrardieta(int a) {
        try {
            if (conectar()) {
                CallableStatement cs = null;
                cs = conexion.prepareCall("begin BAJAS(?); end;");
                cs.setInt(1, a);
                cs.execute();
            }
        } catch (Exception ae) {
            return "Error";
        }
        return "a";
    }
    public String borrar(int a) {
        try {
            if (conectar()) {
                CallableStatement cs = null;
                cs = conexion.prepareCall("begin baja(?); end;");
                cs.setInt(1, a);
                cs.execute();
            }
        } catch (Exception ae) {
            return "Error";
        }
        return "a";
    }
    public String borraralimentodieta(int a) {
        try {
            if (conectar()) {
                CallableStatement cs = null;
                cs = conexion.prepareCall("begin BAJA_ALIMENTO_DIETA(?); end;");
                cs.setInt(1, a);
                cs.execute();
            }
        } catch (Exception ae) {
            return "Error";
        }
        return "a";
    }
    
    public String bodieta(int b) {
        try {
            if (conectar()) {
                CallableStatement cs = null;
                cs = conexion.prepareCall("begin BAJA_DIETA(?); end;");
                cs.setInt(1, b);
                cs.execute();
            }
        } catch (Exception ae) {
            return "Error";
        }
        return "a";
    }

    public String borrarPaciente(int a) {
        try {
            if (conectar()) {
                CallableStatement cs = null;
                cs = conexion.prepareCall("begin ELIMINAR_USUARIO(?); end;");
                cs.setInt(1, a);
                cs.execute();
            }
        } catch (Exception ae) {
            return "Error";
        }
        return "a";
    }

    public String ArrayAcc(String[] alimento/*, String[] porcion*/) {
        String x = "";
        String y = "";
        //String a = "";
        //String b = "";
        if (alimento != null && alimento.length != 0 /*&& porcion != null && porcion.length != 0*/) {
            for (int i = 0; i < (alimento.length - 1); i++) {
                y += ("'" + alimento[i] + "',");
            }
            /*  for (int i = 0; i < (porcion.length - 1); i++) {
             a += ("'" + porcion[i] + "',");
             }*/
            x = "'" + alimento[alimento.length - 1] + "'";
            //b = "'" + porcion[porcion.length - 1] + "'";
            z = "Declare x array:=array(" + y + x + ");";
//y array:=array(" + a + b + ");";
        }
        return z;
    }

    public String altaDieta(String status, String nombre, String descripcion, int id) {
        try {
            if (conectar()) {
                CallableStatement cs = null;
                cs = conexion.prepareCall(z + "BEGIN ALTA_DIETA(?,?,?,?,x); END;");
                cs.setString(1, status);
                cs.setString(2, nombre);
                cs.setString(3, descripcion);
                cs.setInt(4, id);
                cs.execute();
                conexion.close();
                return "fallido";
            }
        } catch (Exception ae) {
            return "fallido";
        }
        return "Alta de alimento";
    }

    public ResultSet mostrardietas() {
        ResultSet rs = null;
        try {
            String sql = "Select * from dieta";
            if (conectar()) {
                Statement stt = conexion.createStatement();
                rs = stt.executeQuery(sql);
                return rs;
            }
            return rs;
        } catch (Exception ae) {
            return rs;
        }
    }

    public String asignarDieta(int dieta, int usuario) {
        try {
            if (conectar()) {
                CallableStatement cs = null;
                cs = conexion.prepareCall("begin ASIGNAR_DIETA(?,?); end;");
                cs.setInt(1, dieta);
                cs.setInt(2, usuario);
                cs.execute();
                conexion.close();
                return "";
            }
            return "";
        } catch (Exception ae) {
            return "";
        }
    }
    public ResultSet mostrardieta(int x) {
        ResultSet rs = null;
        try {
            String sql = "Select * from dieta inner join dieta_usuario on(dieta.ID_DIETA=DIETA_USUARIO.id_dieta) where DIETA_USUARIO.id_usuario=" + x + "";
            if (conectar()) {
                Statement stt = conexion.createStatement();
                rs = stt.executeQuery(sql);
                return rs;
            }
            return rs;
        } catch (Exception ae) {
            return rs;
        }
    }
    public ResultSet mostrardietas(int x) {
        ResultSet rs = null;
        try {
            String sql = "Select * from dieta inner join dieta_usuario on(dieta.ID_DIETA=DIETA_USUARIO.id_dieta) ";
            if (conectar()) {
                Statement stt = conexion.createStatement();
                rs = stt.executeQuery(sql);
                return rs;
            }
            return rs;
        } catch (Exception ae) {
            return rs;
        }
    }
}
